<?php
namespace Manager\Controller;
/**
* ==============================================
* URL：http://www.liuhuanhui.cn
* ==============================================
* @date：2014-11-5
* @time：下午11:09:22
* @author：liuhuanhui
* @encoding：UTF-8
*/
class RoleController extends  AuthController//角色，用户组
{
	
	/**
	 * 显示所有角色
	 */
	function index()
	{
		$this->roles=M('auth_group')->select();
		$this->display();
	}
	/**
	 * 设置用户所属于的角色
	 */
	function userRole()
	{
		$users=D('UsersView')->field('nickname,uid,group_id')->order('id')->select(I('id'));
		$UserRoles=$users[0];
		//组合用户所拥有的角色
		foreach ($users as $user)
		{
			$UserRoles['roles'][$user[group_id]]=$user[group_id];
		}
		$roles=M('auth_group')->select();
		$data=array();
		//查找用户是否已经是该角色
		foreach ($roles as $r)
		{
			if(array_key_exists($r[id], $UserRoles['roles']))
				$r['checked']=true;
			$data[]=$r;
		}
		$this->assign('roles',$data);
		$this->assign('user',$UserRoles);
		$this->display('userRole');
	}
	/**
	 * 设置用户所属于的角色处理方法
	 */
	function userRoleHandle()
	{
		$roles=I('roles');
		$data=array();
		$aga_model=M('auth_group_access');
		$aga_model->startTrans();
		$aga_model->where('uid='.I('uid'))->delete();
		foreach ($roles as $r)
			$data[]=array(uid=>I('uid'),group_id=>$r);
		if($aga_model->addAll($data)!=false)
		{		
			$aga_model->commit();
			$this->success("修改角色信息成功 ,点击返回用户列表",U('User/index'));
		}else{
			$aga_model->collback();
			$this->error("修改角色信息失败！");
		}
	}
	/**
	 * 创建和修改用户组
	 */
	function create()
	{
		$data=M('auth_rule')->select();
		if(I('id'))//修改
		{	
			$groupRule=M('auth_group')->field('id,title,rules')->find(I('id'));
			$arr=explode(',', $groupRule['rules']);
			$newArr=array();
			foreach($data as $v)
			{
				if(in_array($v['id'], $arr))
					$v['checked']=true;
				$newArr[]=$v;
			}
			$this->assign('rules',$newArr);
			$this->assign('role',$groupRule);
		}else{//添加
			$this->assign('rules',$data);
		}
		$this->display();
		
	}
	/**
	 * 删除角色
	 */
	function delete()
	{
		if(M('auth_group')->delete(I('id')))
			$this->success('删除角色成功，正在返回角色管理！',U(index));
		else
			$this->error('删除角色失败！');
	}
	/**
	 * 创建和修改用户组处理方法法
	 */
	function createHandle()
	{	
		$str=join(',', I('ck'));
		$data=array(title=>I('title'),rules=>$str);
		if(I('rid'))//修改
		{
			$data['id']=I('rid');
			if(M('auth_group')->save($data))
				$this->success('修改用户组权限成功，正在返回用户组管理页',U(index));
			else
				$this->error('修改用户组权限失败！');
		}else//添加
		{
			if(M('auth_group')->add($data))
				$this->success('添加用户组成功，正在返回用户组管理页',U(index));
			else
				$this->error('添加用户组失败！');
		}
	}
	/**
	 * 规则管理
	 */
	function rule()
	{
		$this->rules=M('auth_rule')->select();
		$this->display();
	}
	/**
	 * 删除规则
	 */
	function deleteRule()
	{
		if(M('auth_rule')->delete(I('id')))
			$this->success('删除规则成功，正在返回规则管理！',U(rule));
		else
			$this->error('删除规则失败！');
	}
	/**
	 * 添加和编辑规则信息
	 */
	function createRule()
	{
		if(I('id'))
			$this->rule=M('auth_rule')->find(I('id'));
		$this->display('createRule');
	}
	/**
	 * 添加和编辑规则信息处理方法
	 */
	function createRuleHandle()
	{
		if(I('id'))
		{
			if(M('auth_rule')->save($_POST))
				$this->success('修改规则成功，正在返回规则管理！',U(rule));
			else
				$this->error('修改规则失败！');
		}else{
			if(M('auth_rule')->add($_POST))
				$this->success('添加规则成功，正在返回规则管理！',U(rule));
			else
				$this->error('添加规则失败！');
			}
	}
	
}